1
ISA契約とアーキテクチャ状態
AI031Lesson 3
00:00

この インストラクションセットアーキテクチャ(ISA) は基本的な 抽象化レベル であり、ソフトウェアとハードウェアの間の正式な契約でもある。高レベル言語であるCなどのように複雑さを隠す一方で、ISAは アーキテクチャ状態——プロセッサのレジスタとメモリの正確な構成を明らかにする。

1. アーキテクチャ状態

x86-64 CPUは、いくつかの主要な要素を通じてその状態を定義する:

  • プログラムカウンタ(%rip): 次の命令のアドレスを保持する。
  • 整数レジスタファイル: 16個の汎用レジスタ(例: %rax%rbx)で64ビットの値を格納する。
  • 条件コード: 制御フロー用のフラグ(ZF、SF、CF、OF)。
  • ベクトルレジスタ: たとえば YMMレジスタ (256ビット)でSIMD操作に使用される。

2. メモリの抽象化

マシンコードはメモリを巨大な バイトアドレス可能な配列として見ている。x86-64は64ビットの仮想アドレスをサポートしているが、現在の実装では多くの場合48ビットのアドレス空間($2^{48}$バイト)を使用している。データサイズは ワード (16ビット)、 ダブルワード (32ビット)、および クォードワード (64ビット)に分類する。

CPU(状態)%rip(PC)レジスタ(%rax…)条件コードISA契約movq、ret、leaq仮想メモリ0xFFFF...(スタック)0x0000...(コード)

3. 遺伝と互換性

「ムーアの法則」によって駆動され ムーアの法則、インテルは 8086 から Core i7 Haswellまで進化してきた。ISAは 後方互換性を確保しており、旧来のマシンコードが現代のマルチコア、ハイパースレッド対応ハードウェア上で実行可能になる。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>